The Domain Name System (DNS) is an integral part of the Internet and other networks that use Internet-type protocols (such as TCP/IP) and architecture similar to the Internet. DNS allows human users to access information on different computers connected to the Internet by typing, entering, selecting or otherwise specifying, text names as opposed to sequences of numbers. This makes it much easier to remember, access and convey the location of information in the vast Internet. For example, "coolsite.com" is generally more appealing to the average user of the Internet than "199.227.249.232." An analogy is in the use of names of people and places as opposed to being forced to use purely numeric telephone numbers.
However, computers on the Internet execute software that uses machine addresses to access information instead of the mnemonic text domain names. Because of this, the domain names must be mapped to their machine addresses (e.g., "coolsite.com" must be mapped to 192.86.1.90 in the example above) before information at a site or location can be accessed. The mechanism that DNS uses to perform this mapping is a client-server arrangement between a name server and a client resolver. Both the name server and resolver are software processes executing on one or more computers. Essentially, the resolver submits a query to a name server about a domain name. The name server "resolves" the mapping of the domain name to a machine address and sends the machine address back to the resolver as the "answer" to the query. For a detailed discussion of the operation of name servers, routers and DNS in general, see, for example, DNS and BIND, by Paul Albitz and Cricket Liu, published by O'Reilly & Associates, Inc.
FIG. 1A illustrates a DNS lookup, also called a "mapping" or "resolving" of a domain name to a machine address, as performed in the prior art.
In FIG. 1A, computer 10 makes a request of computer 12. Computer 12 forms part of the Internet and, in particular, is a name server within the DNS. For example the request from computer 10 may come from a Web browser application executing on computer 10. In response to computer 10's user typing in a domain name such as "www.bessemer_ventures.com," resolver code used by the browser transmits the domain name query to computer 12. This assumes that computer 12 has been predesignated as the primary domain name server for computer 10.
Computer 12 includes DNS name server software that receives the request. One method of DNS lookup allows computer 12 to check a local list of domain names already matched to machine addresses. If the queried domain name is in the local list then computer 12 can respond with an answer, in the form of the associated machine address, immediately. Such a local list is referred to as a "name cache" that is stored in system random access memory (RAM), disk storage or other storage associated with computer 12. The name cache is updated periodically from other, authoritative, name servers in the Internet.
Assuming computer 12 does not have a match for the queried domain name in computer 12's name cache, computer 12 begins a process of querying other name servers in the Internet, such as computers 14, 16 and 18, for knowledge of the associated machine address. This querying is organized but takes time because of the limitations of the Internet and the ever-increasing number of domain name queries that need to be handled by a limited number of name servers. For a detailed discussion of DNS lookup, see the above reference. After computer 12 has obtained the machine address associated with the domain name www.bessemer_ventures.com, the machine address, 180.201.15.250, in this case, is passed back to computer 10 as the answer to computer 10's domain name query. Note that this can take on the order of a few seconds, especially where the queried domain name does not exist in primary domain name server computer 12's name cache. Also, the necessity of computer 12 then having to query, sometimes several or many, other name servers adds to the overall Internet traffic and consumption of limited domain name server processing resources. This results in a slower DNS response time for all users of the Internet. Since DNS lookup is a requirement in the large majority of web page accesses, this translates into a slower Internet for users throughout the world.
After computer 10 receives the machine address associated with www.bessemer_ventures.com, it may then use the machine address to communicate with the target computer having the machine address. Note that the target computer can be any computer connected to the Internet. This does not have to be (and typically isn't) the primary domain name server, such as computer 12. Rather, the target computer is one operated by the provider of information that the user desires and might be located halfway around the world from the user's primary name server. For example, in the present example of a web browser executing on the user's computer 10, after the user types in the domain name and the browser (via the resolver process) receives the machine address, the next action is to transfer a request to the target machine's address for a specific web page to be displayed on the user's computer 10.
The process of obtaining a web page is shown in FIG. 1A as taking four steps. However, this is merely a symbolic depiction for ease of discussion. All of the communication steps typically occur over a single physical transmission line from a user's computer to an Internet server, switch, backbone, router or other network device. In accomplishing the process of mapping a domain name to a machine address there are many transactions occurring at different communication layers.
The DNS approach to resolving a domain name with an associated machine address is flexible in that it allows independent growth and relatively automatic propagation of new domain names and their associated machine addresses throughout the Internet. However, the resolution time can become unacceptably long, as where multiple, overloaded name servers must be queried in order to obtain the associated machine address. This problem is exacerbated when the domain name that is the subject of a query does not exist within DNS. This can occur, for example, when a user misspells a domain name, when a user has remembered an incorrect domain name, when an outdated domain name is used, where an error occurs in a software program or database, etc.
In the prior art DNS, when a non-existent domain name is queried for the first time it will not be present in the name cache of the primary domain name server. This starts a chain of potentially many queries to additional name servers--each of which will result in no associated machine address for the domain name. The number of queries depends on the type of DNS searching that is performed and on how many sub-domains in the full domain name are valid before an invalid sub-domain is determined. Even where the domain name may exist, there may be other reasons that a connection can not be made, such as when the web server for the domain is down. Basically, long delays occur any time the underlying protocol, i.e., TCP or UDP, is having problems.
FIG. 1B illustrates the prior art's handling of valid and invalid domain name queries.
In FIG. 1B, client side processing, such as is performed on a user's machine when the user is operating a web browser, is shown at 20. DNS name server processing is shown in the box at 22.
The flowchart of FIG. 1B is entered at 24 where it is assumed that a user is executing an application, such as an Internet browser, that allows a Uniform Resource Locator (URL) to be specified by the user for purposes of accessing information. At step 26, the user enters a domain name. Usually the user types the domain name by using the keyboard. Other ways of entering domain names are by clicking on a hyperlink to a domain name, having the domain name automatically provided by software, etc. While most requests for invalid domain name searches are the result of a user misspelling, or other user mistake, errors can also occur when domain names are obtained by other means. An example is when a previously valid domain name becomes defunct, when the user has been emailed an invalid domain name, etc.
At step 30, the browser extracts the domain name from the URL, forms a DNS domain name query and sends the query to a pre-designated name server. At step 28, the name server receives the query and attempts to resolve the domain name. The name server begins by examining its local cache of pre-stored known domain names and associated machine addresses. Typically the name server has received a master list of domain names from a master domain name server, or "root" server. Such lists can be updated every day or so. The list resides in cache, either system RAM or local disk storage, for a predetermined period of time until it is scrapped in favor of another master list. Updates to the cache can also come from the name server's own discoveries about names in DNS as the name server operates and attempts to resolve queries.
At step 32, if the domain name is in the cache then the name server checks, at step 40, to determine whether there is a valid machine address associated with the domain name. If so, the machine address is returned to the client (browser application). The browser application uses the returned machine address to access the domain at step 46. This typically results in the desired information being displayed on the user's computer in the form of a web page. At this point the user has successfully obtained the desired information and the transaction completes at step 50.
Assuming that the queried domain name does not reside in the cache at step 32, step 42 is performed to send a further query to authoritative domain name servers on the Internet in an attempt to resolve the initial query. If a successful resolution is obtained from external name servers, the domain name and associated machine address are stored in the cache and the machine address is returned to the browser at step 46, as before. This represents a successful resolution of the domain name so the desired information is ultimately obtained and displayed on the user's screen. If, however, the query request at step 42 does not return a machine address associated with the domain name, the check at step 48 fails and step 54 is executed to store the domain name in the cache and flag the domain name as invalid. Step 53 sends notification of the failed query to the browser.
At step 52, the browser receives notification of the failed DNS query and displays an error message. Step 44 represents the cycle of the user trying a different domain name in an unassisted attempt to locate the desired information in the desired, and possibly unknown (to the user), domain.
DNS requires that the domain name be exactly correct or it may map to an unintended domain or be invalid (non-existent) and fail to map to a machine address. This is becoming more of a problem as the number of domains increases and the commercial, educational, governmental and other activity on the Internet increases. Since domain names are a concatenation of domains names of different levels, the user will often remember some of the names of the levels and misspell, or remember incorrectly, other levels. For example, the domain "www.berkeley.com" is an invalid domain name. One that might easily be entered by a user who is familiar with the much-publicized ".com" extension for Web sites but who is unfamiliar with the lesser-known ".edu" domain that is designed for educational Internet uses. Typically, the user receives a terse error message that the "domain cannot be located," the domain is "not found," or the like. These types of errors, unlike simple spelling errors that the user may be in a position to correct, given a second try, may delay the user for a long time. The user may wait on the order of 20 seconds before an error notification is displayed when a domain name is invalid.
A recent study revealed that 3%-4% of DNS queries are invalid and, as a result, are not resolved. Probably nearly all of these invalid queries are because of a user's mistake. Thus, it is apparent that an improved name server system for assisting user's who have requested an invalid domain name lookup is desirable. Further, the ability to create an improved DNS service, such as a name server service, that improves the Internet such as by providing faster overall DNS performance, distribution of useful information and promotion of commerce, is desirable.